package com.sukhovilin.patterns.gof.behavioral.Mediator.realworld;

/**
 * MainApp startup class for Real-World Mediator Design Pattern.
 * 
 * @author Dmitry Sukhovilin
 */
public class Program {

	/**
	 * Entry point into console application.
	 */
	public static void main(String[] args) {

		// Create chatroom
		Chatroom chatroom = new Chatroom();

		// Create participants and register them
		Participant George = new Beatle("George");
		Participant Paul = new Beatle("Paul");
		Participant Ringo = new Beatle("Ringo");
		Participant John = new Beatle("John");
		Participant Yoko = new NonBeatle("Yoko");

		chatroom.Register(George);
		chatroom.Register(Paul);
		chatroom.Register(Ringo);
		chatroom.Register(John);
		chatroom.Register(Yoko);

		// Chatting participants
		Yoko.Send("John", "Hi John!");
		Paul.Send("Ringo", "All you need is love");
		Ringo.Send("George", "My sweet Lord");
		Paul.Send("John", "Can't buy me love");
		John.Send("Yoko", "My sweet love");
	}

}